const fw = require('../core/framework');
const exception = require('../exception');
// 引入 formidable
const formidable = require('formidable');
// 文件操作
const fs = require('fs');
const path = require('path');

module.exports = {
    init(router, urlencodedParser) {
        // 处理post图片上传上来的数据
        router.post('/upload', (req, res) => {
            // 图片上传操作
            let form = new formidable.IncomingForm();
            form.parse(req, (err, files, file) => {
                let merchantId = fw.parseMerchantId(files.token);
                if (merchantId) {
                    let filePath = './site/public/upload/' + merchantId;
                    /* 1.上传[将图片从本地，上传到服务器]
                        获取文件所在的位置 - 读取的管道流 - 管道流写的方式写进去 - 管道流
                        */
                    let read = fs.createReadStream(file.userImg.path);
                    if (!fs.existsSync(filePath)) {
                        fs.mkdirSync(filePath)
                    }
                    // 写入的时候，文件夹的名称如果不存在，则会写入失败了；需要手动创建
                    let write = fs.createWriteStream(filePath + '/' + file.userImg.name);
                    read.pipe(write); // pipe 管道传输
                    res.send({
                        code: 0,
                        data: file.userImg.name
                    });
                }else{
                    res.send(exception['400']);
                }
            })
        });
    }
};
